package com.cyt.work.kwmanagement.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.work.kwmanagement.model.po.KwTeacherMessage;
import com.cyt.work.kwmanagement.model.vo.KwTeacherMessageVo;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.work.kwmanagement.model.vo.KwTeacherStExportVo;

import java.text.ParseException;
import java.util.List;

/**
 * 考务教师表详细表-考务教师表详细表Service层接口类
 *
 * @author han jun
 * @date 2019-11-26 11:25:39
 */
public interface KwTeacherMessageService extends BaseService<KwTeacherMessage> {

    /**
     * 分页查询
     *
     * @param kwTeacherMessageVo 接受参数对象
     * @param pageNum 分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult findPage(KwTeacherMessageVo kwTeacherMessageVo, int pageNum, int pageSize);


    /**
     * 分页查询
     *
     * @param kwTeacherMessageVo 接受参数对象
     * @param pageNum 分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult findVoPage(KwTeacherMessageVo kwTeacherMessageVo, int pageNum, int pageSize);


    ReturnResult findVoPageNew(KwTeacherMessageVo kwTeacherMessageVo);

    List<KwTeacherStExportVo> exportTeacherList(KwTeacherMessageVo kwTeacherMessageVo);

    ReturnResult findVoPageSign(KwTeacherMessageVo kwTeacherMessageVo) throws ParseException;

    /**
     * list查询
     *
     * @param kwTeacherMessageVo 接受参数对象
     * @return List<KwTeacherMessage>
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    List<KwTeacherMessage> findList(KwTeacherMessageVo kwTeacherMessageVo);

    /**
     * list查询
     *
     * @param kwTeacherMessageVo 接受参数对象
     * @return List<KwTeacherMessageVo>
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    List<KwTeacherMessageVo> findVoList(KwTeacherMessageVo kwTeacherMessageVo);

    /**
     * 单个对象查询
     *
     * @param kwTeacherMessageVo 接受参数对象
     * @return KwTeacherMessage
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    KwTeacherMessage findOne(KwTeacherMessageVo kwTeacherMessageVo);

    /**
     * 单个对象查询
     *
     * @param kwTeacherMessageVo 接受参数对象
     * @return KwTeacherMessageVo
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    KwTeacherMessageVo findVoOne(KwTeacherMessageVo kwTeacherMessageVo);

    /**
     * 添加或更新
     *
     * @param kwTeacherMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult addOrUpdate(KwTeacherMessageVo kwTeacherMessageVo, SysUser sysUser);

    /**
     * 根据条件逻辑删除
     *
     * @param kwTeacherMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult remove(KwTeacherMessageVo kwTeacherMessageVo, SysUser sysUser);

    /**
     * 根据条件物理删除
     *
     * @param kwTeacherMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult delete(KwTeacherMessageVo kwTeacherMessageVo, SysUser sysUser);

    /**
     * 分配老师
     *
     * @param sysUser            用户信息
     * @param kwTeacherMessageVo 传入参数对象
     * @return ResultDto
     * @author han jun
     * @date 2018-10-30 10:35:18
     */
    ReturnResult startDistributeTeacher(KwTeacherMessageVo kwTeacherMessageVo, SysUser sysUser);


    /**
     * 物理删除所有的考务教师详情
     *
     * @param kwTeacherMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:25:39
     */
    ReturnResult deleteAll(KwTeacherMessageVo kwTeacherMessageVo, SysUser sysUser);

    /**
     * 更新KwTeacherMessage
     *
     * @param sysUser            用户信息
     * @param kwTeacherMessageVo 传入参数对象
     * @return void
     * @author han jun
     * @date 2018-10-30 16:18:17
     */
    ReturnResult updateKwTeacherMessage(KwTeacherMessageVo kwTeacherMessageVo, SysUser sysUser);
}